package jdk6.desktop;

import java.awt.Desktop;
import java.io.File;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;

/**
 * Description: jdk1.6新特性：Desktop类（Desktop）
 * 可以用来打开系统默认浏览器浏览指定的URL
 * 打开系统默认邮件客户端给指定的邮箱发邮件
 * 用默认应用程序打开或编辑文件(比如,用记事本打开以txt为后缀名的文件)
 * 用系统默认的打印机打印文档
 * 
 * 个人认为：不是很有用吧，感觉很少说会在程序这一边打开这些东西
 * @author Kwum
 * @date 2017年6月16日 下午8:17:48
 * @version 1.0
 */

public class Run {
    
    private static Desktop desktop; 

    public static void main(String[] args) {
        
        //判断当前平台是否支持Desktop类
        if(Desktop.isDesktopSupported()){
            desktop = Desktop.getDesktop();
        }
        
        //打开浏览器访问www.baidu.com
//        openBrower("https://www.baidu.com");
        
        //向指定地址发送邮件
//        sendEmail("472877643@qq.com", "hello", "I'm from jdk6!");
        
        //打开新的文本文档
        edit();
        
        //打印机打印文档
//        print("src/jdk6/desktop/jdk6.txt");
    }
    
    /**
     * 使用系统默认浏览器浏览指定url
     * @param Url 指定url
     * @throws Exception
     * @author kwum
     */
    public static void openBrower(String url){
        
        if(desktop != null && desktop.isSupported(Desktop.Action.BROWSE)){
            
            try {
                desktop.browse(new URI(url));
            } catch (IOException e) {
                e.printStackTrace();
            } catch (URISyntaxException e) {
                e.printStackTrace();
            }
        }
    }
    
    /**
     * 使用系统默认邮件客户端给指定的邮箱发邮件
     * @param emailAddress 目标邮箱
     * @param title 标题
     * @param body 内容
     * @author kwum
     */
    public static void sendEmail(String emailAddress, String title, String body){
        
        if(desktop != null && desktop.isSupported(Desktop.Action.MAIL)){
            
            try {
                desktop.mail(new URI("mailto:" + emailAddress , "subject:" + title , "body:" + body));
            } catch (IOException e) {
                e.printStackTrace();
            } catch (URISyntaxException e) {
                e.printStackTrace();
            }
        }
    }
    
    /**
     * 打开一个新的文本文档
     * 
     * @author kwum
     */
    public static void edit(){
        
        if(desktop != null && desktop.isSupported(Desktop.Action.OPEN)){
            
            File file = new File("src/jdk6/desktop/jdk6.txt");
            try {
                if(!file.exists()){   
                    file.createNewFile();
                }
                desktop.edit(file);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    
    /**
     * 系统默认的打印机打印文档
     * @param path 路径
     * @author kwum
     */
    public static void print(String path){
        
        if(desktop != null && desktop.isSupported(Desktop.Action.PRINT)){
            File file = new File(path);
            try {
                desktop.print(file);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    
}
